// 确认删除数据
function deleteData(callback, args) {
	$.messager.confirm("确认", "确定要删除这些记录吗？", function(r) {
		if(r) {
			callback(args);
		}
	});
}

// 自动把页面上input中的数据字典key转化成text
function parseInputDictValToText() {
	var sels = $("input[type='text'][sysDict]");
	sels.each(function(i, e) {
		e = $(e);
		var dictTypeName = e.attr("sysDict");
		var dictVal = e.val();
		Page.ajaxGET(ctxPath + "/sys/dict/getDictTextByVal", {
		    'dictTypeName' : dictTypeName,
		    'dictVal' : dictVal
		}, function(o) {
			var res = o.result;
			e.val(res);
		}, {
			async : false
		});
	});
}

// 自动往页面固定的select框里面填充字典数据
function initDictDataSel() {
	var sels = $("select[sysDict]");
	sels.each(function(i, e) {
		e = $(e);
		var defaultVal = e.attr("data-val");
		if(e.attr("emptyFirst") == "true") {
			e.append("<option value=''></option>");// 添加一个空的option
		}
		var dictTypeName = e.attr("sysDict");
		Page.ajaxGET(ctxPath + "/sys/dict/getDictData", {
			'dictTypeName' : dictTypeName
		}, function(o) {
			var res = o.result;
			for(var k in res) {
				if(defaultVal == k) {
					e.append("<option value='" + k + "' selected>" + res[k] + "</option>");// 添加option
				} else {
					e.append("<option value='" + k + "'>" + res[k] + "</option>");// 添加option
				}
			}
		}, {
			async : false
		});
	});
}

function fillDictDataSel() {
	// 自动往动态生成的select框里面填充字典数据
	var sels = $("select[dictType]");
	sels.each(function(i, e) {
		e = $(e);
		if(e.attr("filled") == "true") {
			return;
		}
		// 通过此属性来回显默认选中的
		var defaultVal = e.attr("data-val");
		if(e.attr("emptyFirst") == "true") {
			e.append("<option value=''></option>");// 添加一个空的option
		}
		// 得到此属性的值查询字典表里的文本并回显到下拉框下
		var dictTypeName = e.attr("dictType");
		Page.ajaxGET(ctxPath + "/sys/dict/getDictData", {
			'dictTypeName' : dictTypeName
		}, function(o) {
			var res = o.result;
			for(var k in res) {
				if(defaultVal == k) {
					e.append("<option value='" + k + "' selected>" + res[k] + "</option>");// 添加option
				} else {
					e.append("<option value='" + k + "'>" + res[k] + "</option>");// 添加option
				}
			}
			e.attr("filled", "true");
		}, {
			async : false
		});
	});
}

// 往select控件中填充省份选项
function initProvinceSel(selDom) {
	Page.ajaxGET(ctxPath + "/sys/address/getAllProvince", {}, function(o) {
		var res = o.provinceList;
		var defaultVal = selDom.attr("data-val");
		selDom.append("<option value=''></option>");// 添加空的option
		for(var i = 0; i < res.length; i++) {
			if(defaultVal == res[i].provinceCode) {
				selDom.append("<option value='" + res[i].provinceCode + "' selected>" + res[i].province + "</option>");// 添加option
			} else {
				selDom.append("<option value='" + res[i].provinceCode + "'>" + res[i].province + "</option>");// 添加option
			}
		}
		initCitySel($("#citySel"), selDom.find("option:selected").val());
	}, {
		async : false
	});
}

// 往select控件中填充城市选项
function initCitySel(selDom, provinceCode) {
	if(provinceCode == undefined || provinceCode == "") {
		selDom.empty();
		return;
	}
	Page.ajaxGET(ctxPath + "/sys/address/getCityListByProvinceCode/" + provinceCode, {}, function(o) {
		var res = o.cityList;
		selDom.empty();
		var defaultVal = selDom.attr("data-val");
		selDom.append("<option value=''></option>");// 添加空的option
		for(var i = 0; i < res.length; i++) {
			if(defaultVal == res[i].cityCode) {
				selDom.append("<option value='" + res[i].cityCode + "' selected>" + res[i].city + "</option>");// 添加option
			} else {
				selDom.append("<option value='" + res[i].cityCode + "'>" + res[i].city + "</option>");// 添加option
			}
		}
	}, {
		async : false
	});
}

// 往select控件中填充数据字典类型(数据字典模块用)
function initTypeSel(selDom, defaultVal) {
	Page.ajaxGET(ctxPath + "/sys/dict/allType", {}, function(o) {
		var res = o.result;
		for(var i = 0; i < res.length; i++) {
			if(defaultVal && defaultVal == res[i].id) {
				selDom.append("<option selected='selected' value='" + res[i].id + "'>" + res[i].txt + "</option>");// 添加option
			} else {
				selDom.append("<option value='" + res[i].id + "'>" + res[i].txt + "</option>");// 添加option
			}
		}
	}, {
		async : false
	});
}

/**
 * 字符串转日期
 */
function stringToDate(dateStr, separator) {
	if(!separator) {
		separator = "-";
	}
	var dateArr = dateStr.split(separator);
	var year = parseInt(dateArr[0]);
	var month;
	// 处理月份为04这样的情况
	if(dateArr[1].indexOf("0") == 0) {
		month = parseInt(dateArr[1].substring(1));
	} else {
		month = parseInt(dateArr[1]);
	}
	var day = parseInt(dateArr[2]);
	var date = new Date(year, month - 1, day);
	return date;
}

// 匹配日期的正则表达式
var DATE_REG = new RegExp(/^[1-9]\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$/);

/**
 * 两个时间相差天数
 * 
 * @param sDate1
 * @param sDate2
 * @returns
 */
function dateDiff(sDate1, sDate2) { // sDate1和sDate2是2006-12-18格式
	if((typeof sDate1).toLowerCase() == "string") {
		sDate1 = Date.parse(sDate1);
	}
	if((typeof sDate2).toLowerCase() == "string") {
		sDate2 = Date.parse(sDate2);
	}
	var dateSpan = sDate2 - sDate1;
	return Math.floor(dateSpan / (24 * 3600 * 1000));
};

/**
 * 日期距离今天的天数
 * 
 * @param aDate
 */
function apartNow(aDate) {
	return dateDiff(new Date(), aDate);
}

/**
 * 显示title信息显示
 * 
 * @param divObj,
 * text
 */
function showTitleInfoBar(divObj, text) {
	divObj.find("span").html(text);
	divObj.fadeIn(1500);
}

/**
 * 关闭title信息显示
 * 
 * @param obj
 */
function closeTitleInfoBar(obj) {
	var parentObj = $(obj).parent();
	parentObj.fadeOut(1000);
}

/**
 * 初始化页面中的Tab页签块
 * 
 * @param tab
 */
function initTabBar(tab) {
	var tabObj = getJqueryObject(tab);
	var links = tabObj.find("a[data-toggle]");
	links.click(function() {
		var _this = $(this);
		var isActive = _this.attr("isActive");
		if(isActive == "true") {// 如果已经是激活的面板，什么都不做
			return;
		}
		for(var i = 0; i < links.length; i++) {
			var link = $(links.get(i));
			if(link.attr("isActive") == "true") {
				var linkTab = link.attr("linkTab");
				// document.getElementById(linkTab).className="hidden";//找出当前激活的那个面板的id，把它隐藏
				$("#" + linkTab).hide({
					duration : 300
				});
				link.attr("isActive", "false");
				break;
			}
		}
		var _thisTab = _this.attr("linkTab");// 找出当前点击的那个面板的id，把它显示出来
		// document.getElementById(_thisTab).className="tab-pane fade";//把点击的这个显示出来
		$("#" + _thisTab).show({
			duration : 300
		});
		_this.attr("isActive", "true");
		if(_this.attr("formIndex") != undefined) {
			formIndex = parseInt(_this.attr("formIndex"));
		}
	});
}

/**
 * 将表单中所有输入元素的值封装成JSON对象
 * 
 * @param form
 * Object 表单对象，可以是表单id或者Dom元素或JQuery对象
 * @param options
 * Object 是否忽略只读栏位（默认忽略）是否忽略禁用栏位（默认忽略）是否忽略空白栏位（默认忽略） 元素被忽略的属性标注名（默认为‘ignoreAttr’） 示例：{ignorReadOnly:Boolean,
 * ignorDisabled:Boolean, ignoreBlank:Boolean, ignoreAttr:String}
 * @returns formData 返回表单封装后形成的JSON对象
 */
function serializeForm(form, options) {
	var formData = {};
	var ignoreAttr = "ignoreAttr";
	var ignoreBlank = true, ignoreReadOnly = true, ignoreDisabled = true;
	if(options) {
		if(options.ignoreAttr != undefined) {
			ignoreAttr = options.ignoreAttr;
		}
		if(options.ignoreBlank === false) {
			ignoreBlank = false;
		}
		if(options.ignoreReadOnly === false) {
			ignoreReadOnly = false;
		}
		if(options.ignoreDisabled === false) {
			ignoreDisabled = false;
		}
	}
	form = getDomObject(form);
	for(var i = 0; i < form.elements.length; i++) {
		var element = form.elements[i];
		var ignore = element.getAttribute(ignoreAttr);
		if(ignore != undefined && ignore.toLowerCase() != "false") {
			continue;
		}
		if(element.disabled && ignoreDisabled) {
			continue;
		}
		if(element.readOnly && ignoreReadOnly) {
			continue;
		}
		var elementName = element.name;
		if((typeof (elementName) === "undefined") || (elementName === null) || (elementName.length === 0)) {
			continue;
		}
		var tagName = element.tagName;
		if((tagName === undefined) || (tagName === null) || (tagName.length === 0)) {
			continue;
		}
		tagName = tagName.toLowerCase();
		if(tagName === 'input' || tagName === 'textarea') {
			var type = element.type;
			if(type === undefined || type === null) {
				continue;
			}
			if(element.value == undefined || (element.value == "" && ignoreBlank)) {
				continue;
			}
			type = type.toLowerCase();
			if((type === 'text') || (type === 'password') || (type === 'hidden') || (tagName === 'textarea')) {
				//formData[elementName] = encodeURIComponent(element.value.replace(/\r\n/ig, ""));
				formData[elementName] = element.value;
			} else if(type === 'radio' && element.checked) {
				formData[elementName] = element.value;
			} else if(type === 'checkbox' && element.checked) {
				if(formData[elementName] == undefined) {
					formData[elementName] = new Array();
				}
				formData[elementName].push(element.value);
			} else {
				continue;
			}
		} else if(tagName === 'select') {
			for(var j = 0; j < element.options.length; j++) {
				if(element.options[j].selected) {
					if(element.value == undefined || (element.value == "" && ignoreBlank)) {
						continue;
					}
					formData[elementName] = element.value;
				}
			}
		}
	}
	return formData;
}

/**
 * 将一个不明确的对象转化成JQuery对象
 * 
 * @param obj
 * 需要转化的对象，可以是id或者Dom元素或JQuery对象
 * @returns 返回转化所得的JQuery对象
 */
function getJqueryObject(obj) {
	if((typeof jQuery) == 'undefined') {
		return undefined;
	}
	if(obj instanceof jQuery) { // obj是jQuery对象
		return obj;
	} else if(obj instanceof HTMLElement) { // obj是DOM对象
		return $(obj);
	} else if((obj instanceof String) || ((typeof obj).toLowerCase() == 'string')) { // obj是String对象
		return $("#" + obj);
	}
	return undefined;
}

/**
 * 将一个不明确的对象转化成Dom对象
 * 
 * @param obj
 * obj 需要转化的对象，可以是id或者Dom元素或JQuery对象
 * @returns 返回转化所得的Dom对象
 */
function getDomObject(obj) {
	if((typeof (jQuery)) != 'undefined' && (obj instanceof jQuery)) { // obj是jQuery对象
		return obj.get(0);
	} else if(obj instanceof HTMLElement) { // obj是DOM对象
		return obj;
	} else if((obj instanceof String) || ((typeof obj).toLowerCase() == 'string')) { // obj是String对象
		return document.getElementById(obj);
	}
	return undefined;
}

/**
 * 初始化所有带有指定属性的日期文本框
 */
function initDateText(attr) {
	// 同时绑定多个时间日期框
	if(!attr) {
		attr = "isDate";
	}
	lay("input[" + attr + "]").each(function() {
		var doneEvent = this.getAttribute("doneEvent");
		laydate.render({
		    elem : this,
		    trigger : 'click',
		    done : function(dates) {
			    if(doneEvent != null && doneEvent != undefined && doneEvent != "") {
				    eval(doneEvent + "('" + dates + "')");
			    }
		    }
		});
	});
}
